\subsection{粒球的生成}
生成包含许多数据点的粒度球，并用于替换数据点来参与分类器的学习过程. 在任何维度空间 $\mathbb{R}^d$  中,粒球可以用以下等式描述:

$$ (x-c)^d = r^d $$
$c$ 代表粒球的球心, $r$ 代表粒球的半径. 接下来就是粒球的定义:
\begin{defn}
    Given a data set $D\in \mathbb{R}^d$ , a point $O$ and a granular ball GB with $C$ as its center and $r$ as its radius.
    The center $C$ is the center of gravity of all sample points in GB, and $r$ is equal to the average distance from all points 
    in GB to $C$ . Specifically, we have:
    $$ C=\frac{1}{N}\sum_{i=1}^N i,\qquad r = \frac{1}{N}\sum_{i=1}^N|O_i - C| $$ 
\end{defn}
半径$r$被定义为平均距离，而不是最大或最小距离的主要原因是粒球的大小不容易受到异常样本的影响.

接下来定义一些距离概念, 首先是点到粒球的距离, 如果点在粒球外, 则是点到圆心的距离减掉半径; 如果点在粒球内, 则距离为0.

\begin{defn}\label{def:pointandball}
    Given a data set $D\in \mathbb{R}^d$ , a point $O$ and a granular ball GB with $C$ as its center and $r$ as its radius. The  
    distance from $O$ to GB, denote as $dis(O,GB)$ , is defined as :
    $$ dis(O,GB)=\begin{cases}
        dis(O,C)-r & \mathrm{if} dis(O,C) - r > 0 \\ 
        0          & else 
    \end{cases} $$
\end{defn}

然后就是粒球和粒球的距离
\begin{defn}
    Given a data set $D\in \mathbb{R}^d$ , a point $O$ and two granular balls $GB_1$ and $GB_2$ with $C_1$ and $C_2$ respectively as their
    centers and $r_1$ and $r_2$ as their radii, respectively. The distance from $GB_1$ to $GB_2$ ,denoted as $dis(GB_1,GB_2)$ is defined as :
    $$ dis(GB_1,GB_2)=\begin{cases}
        dis(C_1,C_2)-r_1-r_2, & \mathrm{if } dis(C_1,C_2)-r_1-r_2>0 \\ 
        0, & else 
    \end{cases} $$
\end{defn}
也就是如果两个球在分离状态下才有大于0的距离, 其他的情况下距离都是0.



首先，在整个数据集上生成两个初始颗粒球，每个颗粒球的半径等于其内部点到球心的平均距离。然后，计算每个颗粒球的纯度，并且如果纯度低于给定的纯度阈值，则将迭代地划分颗粒球，直到其纯度变得低于纯度阈值。在每个颗粒球的生成过程中，仅使用2-means聚类方法。只有当颗粒球的纯度大于给定阈值时，才实施进一步的分裂。
此外, 使用2均值聚类，将样本分配给离它最近的颗粒球。为了减少噪声数据的影响，每个颗粒球的半径等于从其中所有样本到其中心的平均距离。

应该注意的是，并非所有数据点都需要包含在颗粒球中（被颗粒球覆盖）。也就是说，一些缺失的细节不会影响决策结果。即使一些数据点不包含在任何颗粒球内，决策平面的分类正确性也不受影响.

算法 \ref{al:geneball} 是生成粒球的方法:

\input{algorithm/gene_ball.tex}
